#！usr/bin/env python3
# -*- coding:utf-8 -*-


#位置参数
def power1(x):
    if not isinstance(x,(int,float)):
        raise TypeError('bad type Error')
    return x * x

def power2(x,n):
    if not isinstance(x,(int,float)):
        raise TypeError('bad ttpe error')
    if not isinstance(n,(int,float)):
        raise TypeError('bad ttpe error')
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    return s

#默认参数
def power3(x,n=2):
    if not isinstance(x,(int,float)):
        raise TypeError('bad ttpe error')
    if not isinstance(n,(int,float)):
        raise TypeError('bad ttpe error')
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    return s

#默认参数必须指向不变对象
def add_end(L=None):
    if L == None:
        L = []
    L.append('end')
    return L

#可变参数 参数前加*
#定义calc(numbers) 某些数字的平方和
def calc(*numbers):
    s = 0
    for i in numbers:
        s = s + i*i
    return s

#关键字参数 关键字参数在函数内部自动组装成一个dict

def person(name,age,**kw):
    if 'city' in kw:
        pass
    if 'job' in kw:
        pass
    print('name:',name, 'age:',age ,'other:',kw )

#命名关键字参数
def person1(name,age,*,city,job):
    print(name,age,city,job)

def person2(name,age,*args,city,job):
    print(name,age,args,city,job)

#计算几个数的乘积
def product(*x):
    i = 1
    sum = x[0]
    if len(x) < 1:
        return sum
    else: 
        while i < len(x):
            sum = sum * x[i]
            i = i + 1
        return sum
    
